package com.ctsi.ssdc.service;

import com.ctsi.ssdc.common.CallBackResult;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.multipart.MultipartFile;

import java.util.Date;

public interface ExcelService {

    boolean uploadExcel(MultipartFile uploadExcel, Date date);
    CallBackResult uploadEconomicIndicatorsExcel(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadSubDistrictTownIndustryExcel(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadIndustrialEconomicIndicatorsExcel(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadSubDistrictTownFixedInvestmentExcel(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadSubDistrictTownIndustrialInvestmentExcel(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadFixedInvestmentExcel(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadSocialRetailSalesExcel(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadTradeAndServiceIndustryExcel(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadExcel02(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadExcel08(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadExcel09(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadExcel11(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadExcel12(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadExcel14(Workbook wb, String sheetName, int startReadLine, Date date);
    CallBackResult uploadExcel15(Workbook wb, String sheetName, int startReadLine, Date date);

    /**
     * 重新计算工业指标等
     * @param date
     */
    void calculateExcel(Date date);

    /**
     * 8基础表工业分行业（产值能耗）
     * 规上工业总产值、高新技术产业产值、高新占比、综合能源消费量（吨标准煤）、规上工业用电量（万千瓦时）、
     * 万元产值能耗（吨标准煤/万元）数据直接从sheet8中获取计算
     * @param date
     */
    void sheet8Cal(Date date);

    void sheet9Cal(Date date);

    /**
     * 11基础表投资（工投基础）
     * 8、固投统计表展示全社会固定资产投资、工业投资（表11中工业项目标记为1的）、
     * 房地产投资（表12）、基础设施项目投资（表11中除工业项目标记为1的）即可
     * ，数据使用11基础表投资（工投基础）于11基础表投资（房地产）中的数据计算；
     * 需注意单位问题，详情表中单位为万元、统计表中单位为亿元。
     * @param date
     */
    void sheet11Cal(Date date);

    /**
     * 12基础表投资（房地产）
     * 8、固投统计表展示全社会固定资产投资、工业投资（表11中工业项目标记为1的）、
     * 房地产投资（表12）、基础设施项目投资（表11中除工业项目标记为1的）即可
     * ，数据使用11基础表投资（工投基础）于11基础表投资（房地产）中的数据计算；
     * 需注意单位问题，详情表中单位为万元、统计表中单位为亿元。
     * @param date
     */
    void sheet12Cal(Date date);

    /**
     *
     * 交通及营利性服务业营业额
     * @param date
     */
    void sheet14Cal(Date date);

    /**
     * 批零住餐营业额
     * @param date
     */
    void sheet15Cal(Date date);

    /**
     * 计算经济表 -> 外贸月度
     * @param date
     */
    void sheet1Cal(Date date);


    /**
     * 返回当前excel月份是否重复
     * @param date 年月
     * @return
     */
    Boolean checkExcel(Date date);

    /**
     * 删除所有指定月份数据
     * @param date
     */
    void removeAllExcel(Date date);

    Boolean importFormerData(MultipartFile file, Date date);

    Date getLatestDataTime();

}
